// web => 基于 http 协议，构建上互联网之上，通过客户端（浏览器）访问服务器端（Node 开发的 Http 服务、Express、Koa、Egg）
const http = require("http");
// 读文件，用 fs 模块
const fs = require("fs");
const { Buffer } = require("buffer");

// 使用 Http 模块，创建一个 Web 应用实例
const server = http.createServer((request, response) => {
    if (request.url === "/favicon.ico") {
        return;
    }

    if (request.url === "/html") {
        // 告诉客户端，我发送的响应数据时什么格式的
        response.setHeader("Content-Type", "text/plain; charset=utf-8");
        // 异步方式
        fs.readFile("./index.html", "utf8", (error, str) => {
            if (error) {
                response.end("出错了");
                return;
            }
            response.end(str);
        });
        // 同步方式
        // const str = fs.readFileSync("./index.html", "utf8");
        // response.end(str);
        // end() 方法，可以传入字符串，或者是 buf
        // response.end(Buffer.from("hello world"));
        return;
    }

    // request 请求对象、response 响应对象
    // 获取请求头信息
    console.log("request.headers", request.headers);
    // 请求方式
    console.log("request.method", request.method);
    // 请求路径
    console.log("request.url", request.url);
    // 返回响应给客户端，字符串、或者是 Buffer
    response.write("Hi, Bawei.\n");
    response.write("Hello World!");
    // 告诉客户端，结束响应
    response.end();
});

// 监听端口，提供 Web 服务
server.listen(3000, () => {
    console.log("Http server running at http://localhost:3000");
});
